#ifndef __CODEC_H__
#define __CODEC_H__ 1

#include "audio_formats.h"
#include <stdint.h>

class ICodec
{
public:
	ICodec() { }
	virtual ~ICodec() { }

	virtual NAudioFormats::ECodec getCodecType() = 0;

	virtual double convertFromS8ToDouble(int8_t pSample) = 0;
	virtual int8_t convertFromDoubleToS8(double pSample) = 0;

	virtual double convertFromU8ToDouble(uint8_t pSample) = 0;
	virtual uint8_t convertFromDoubleToU8(double pSample) = 0;

	virtual double convertFromS16ToDouble(int16_t pSample) = 0;
	virtual int16_t convertFromDoubleToS16(double pSample) = 0;

	virtual double convertFromU16ToDouble(uint16_t pSample) = 0;
	virtual uint16_t convertFromDoubleToU16(double pSample) = 0;
private:
	ICodec(const ICodec& );
	ICodec& operator=(const ICodec& );
};

#endif
